Dense লেয়ার (Fully Connected Layer) হল নিউরাল নেটওয়ার্কের সবচেয়ে সাধারণ এবং ব্যাপকভাবে ব্যবহৃত লেয়ার। একটি Dense লেয়ার প্রতিটি ইনপুটকে প্রতিটি আউটপুটের সাথে সংযোগ স্থাপন করে। এই লেয়ারে প্রতিটি নোড (নিউরন) একটি এক্টিভেশন ফাংশনের মাধ্যমে তার আউটপুট বের করে।
এখন, আমরা Keras ব্যবহার করে একটি Simple Neural Network তৈরি করব, যাতে একটি Dense লেয়ার ব্যবহার করা হবে। আমাদের এই উদাহরণে, আমরা MNIST ডেটাসেট ব্যবহার করব, যা হস্তাক্ষরের সংখ্যা চিহ্নিত করতে ব্যবহৃত হয়।
Keras এ Simple Neural Network তৈরি
প্রথমে প্রয়োজনীয় লাইব্রেরি ইনস্টল করা:
আপনি যদি Keras এবং TensorFlow ইনস্টল না করে থাকেন, তাহলে এটি ইনস্টল করতে হবে:
pip install tensorflowকোড উদাহরণ:
import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical # MNIST ডেটাসেট লোড করা (x_train, y_train), (x_test, y_test) = mnist.load_data() # ডেটা প্রিপ্রসেসিং: ইনপুট ডেটাকে নর্মালাইজ করা x_train = x_train.reshape((x_train.shape[0], 28 * 28)).astype('float32') / 255 x_test = x_test.reshape((x_test.shape[0], 28 * 28)).astype('float32') / 255 # আউটপুট লেবেলকে ক্যাটেগরিক্যাল আউটপুটে রূপান্তর করা y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) # মডেল তৈরি করা model = Sequential() # Dense লেয়ার যোগ করা (নিউরাল নেটওয়ার্কের প্রথম লেয়ার) model.add(Dense(128, input_dim=28*28, activation='relu')) # 128 নিউরন model.add(Dense(10, activation='softmax')) # আউটপুট লেয়ার, 10 ক্লাস # মডেল কম্পাইল করা model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # মডেল প্রশিক্ষণ model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test)) # মডেল মূল্যায়ন loss, accuracy = model.evaluate(x_test, y_test) print(f'Loss: {loss}') print(f'Accuracy: {accuracy}')
ব্যাখ্যা:
- ডেটাসেট লোড:
mnist.load_data()ফাংশনটি MNIST ডেটাসেট লোড করে, যেখানে x_train এবং x_test ইনপুট ডেটা (ছবি), এবং y_train ও y_test তাদের লেবেল (সংখ্যা) থাকে।
- ডেটা প্রিপ্রসেসিং:
x_trainএবংx_testকে 28x28 পিক্সেল এর ২-ডি আউটপুট থেকে ১-ডি আউটপুটে (784 ভ্যালু) রূপান্তর করা হয় এবং নর্মালাইজ করা হয় (০-১ এর মধ্যে আনা)।to_categoricalফাংশনটি আউটপুট লেবেলকে ক্যাটেগরিক্যাল আউটপুটে রূপান্তরিত করে (যেমন, 0-9 সংখ্যাগুলির জন্য One-Hot Encoding)।
- Neural Network Model:
Sequential()মডেলটি Keras এ একটি সোজা লিনিয়ার স্ট্যাক মডেল তৈরি করতে ব্যবহৃত হয়।Dense(128)প্রথম Dense লেয়ারটি 128 নিউরন ব্যবহার করে এবংinput_dim=28*28দিয়ে ইনপুট ডেটার সাইজ নির্ধারণ করা হয়।activation='relu'রিলু (ReLU) এক্টিভেশন ফাংশনটি প্রথম লেয়ারের জন্য ব্যবহার করা হয়েছে, যা খুবই জনপ্রিয় এবং কার্যকরী।Dense(10)দ্বিতীয় লেয়ারটি আউটপুট লেয়ার, যেখানে 10 নিউরন থাকবে (প্রতিটি 0 থেকে 9 পর্যন্ত একটি সংখ্যা চিহ্নিত করতে)। এখানেactivation='softmax'ব্যবহার করা হয়েছে যাতে আউটপুট গুলি একটি সম্ভাবনা বিতরণে রূপান্তরিত হয় (One-Hot Encoding).
- মডেল কম্পাইল এবং প্রশিক্ষণ:
model.compile(): এখানে loss function হিসেবেcategorical_crossentropyএবং optimizer হিসেবেadamব্যবহার করা হয়েছে।metrics=['accuracy']দিয়ে মডেলের পারফরম্যান্স পরিমাপ করা হবে।model.fit(): মডেলটি 10 ইপোক (epochs) এর জন্য প্রশিক্ষিত হবে, এবং প্রতি ব্যাচে 32 ইনপুট ডেটা নিয়ে এটি প্রশিক্ষণ চলবে।
- মডেল মূল্যায়ন:
model.evaluate()ফাংশনটি টেস্ট ডেটাসেটের উপর মডেলের পারফরম্যান্স পর্যালোচনা করবে এবং লস এবং অ্যাকুরেসি দেখাবে।
সারাংশ
এটি ছিল একটি সাধারণ নিউরাল নেটওয়ার্কের উদাহরণ যা Keras এবং Dense লেয়ার ব্যবহার করে তৈরি করা হয়েছে। এখানে আমরা MNIST ডেটাসেট ব্যবহার করেছি এবং নিউরাল নেটওয়ার্কের একটি মৌলিক আর্কিটেকচার তৈরি করেছি, যাতে ইনপুট ডেটা হিসেবে ছবি এবং আউটপুট লেবেল হিসেবে সংখ্যা চিহ্নিত করা হয়।
Read more